uint32_t reverseBits(uint32_t n) {
    uint32_t ret = 0;
    for (int i = 0; i < 32; i++) {
        ret = (ret << 1) + (n >> i & 1);
    }
    return ret;
}

/***关于位运算相关知识
 * 1.判断奇偶
 *  (x & 1) == 1
 *  (x & 1) == 0
 * 2. x &= (x - 1)把x最低位的二进制1去掉
 * 3. x & -x 得到最低位的1
 * 4. x & ~x  得到结果为0
 * 
 * 对于指定位置的位运算
 * 1.将x最右边的n位清零 x & (~0 << n)
 * 2.获取x的第n位值：(x >> n) & 1
 * 3.获取x的第n位的幂值 x & (1 << n)
 * 4.仅将第n位置置为1：x | (1 << n)
 * 5.仅将第n位置置为0：x & (~(1 << n))
 * 6.将x最高位至第n位清零：x & ((1 << n) - 1)
 * 7.将第n位至第0位清零：x & (~((1 << (n + 1)) - 1))
 * ***/
